{"version":3,"file":"static/chunks/pages/workspace/tools/recipes/[recipeId]-d08c8bae043f852c.js","mappings":"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","sources":["webpack://_N_E/?a5cd","webpack://_N_E/./src/components/Explore/Gallery/ImageItem/ImageCardNavigator.tsx","webpack://_N_E/./src/components/Workspace/Recipes/RecipeDetail/ExampleImages.tsx","webpack://_N_E/./src/components/Workspace/Recipes/RecipeDetail/RecipeSearch.tsx","webpack://_N_E/./src/components/Workspace/Recipes/RecipeDetail/SettingRecipe.tsx","webpack://_N_E/./src/components/Workspace/Recipes/RecipeDetail/index.tsx","webpack://_N_E/./src/pages/workspace/tools/recipes/[recipeId]/index.tsx"],"sourcesContent":["\n    (window.__NEXT_P = window.__NEXT_P || []).push([\n      \"/workspace/tools/recipes/[recipeId]\",\n      function () {\n        return require(\"private-next-pages/workspace/tools/recipes/[recipeId]/index.tsx\");\n      }\n    ]);\n    if(module.hot) {\n      module.hot.dispose(function () {\n        window.__NEXT_P.push([\"/workspace/tools/recipes/[recipeId]\"])\n      });\n    }\n  ","import { cn } from \"@/utils/cn\"\nimport { ContentModerationRating, ImageSimpleDetail } from \"@/api/sdk\"\nimport { memo, useRef } from \"react\"\nimport ImageInView from \"./ImageInView\"\nimport ImageItemList from \"@/components/Workspace/RecentV2/RecentImages/ImageItemList\"\nimport { ImageGenerationSource } from \"@/api/sdk\"\nimport { RoutedDialogLink } from \"@/providers/RoutedDialogProvider\"\nimport { useImagesContext } from \"@/providers/ImagesProvider\"\nimport { GalleryItemProps } from \"./ImageItem\"\nimport useCustomRouter from \"@/hooks/useCustomRouter\"\nimport ImageReaction from \"./ImageReaction\"\n\nconst ImageCardNavigator = ({\n  data: image,\n  onSelect,\n  containerWidth,\n  refetchImages,\n  className,\n  isDisabledInView,\n  hiddenSelectPrompt,\n  hiddenMenu,\n  showHoverAttributes,\n  isExplore,\n  selectionMode,\n  isChecked,\n  onCheck,\n  parentFolderId,\n  filters,\n  isUpload,\n  accessedAt,\n  stretch,\n  classNameItem,\n  imgClassName,\n  hiddenSelect,\n  hiddenReaction,\n  layout = \"grid\",\n  typeRedirectRouter,\n}: GalleryItemProps) => {\n  const galleryItemRef = useRef<HTMLDivElement>(null)\n  const { images } = useImagesContext()\n\n  const router = useCustomRouter()\n\n  const historyPath = router.asPath\n\n  return (\n    <div\n      key={image.id}\n      data-id={image.id}\n      className={cn(\"group shrink relative gallery-item\", className)}\n      ref={galleryItemRef}\n    >\n      <RoutedDialogLink\n        name=\"imageDetailExplore\"\n        type={typeRedirectRouter}\n        state={{\n          imageId: image.id,\n          images: images as ImageSimpleDetail[],\n          filters: {\n            historyPath,\n            ...filters,\n          },\n        }}\n      >\n        {layout === \"grid\" ? (\n          <ImageInView\n            isExplore={isExplore}\n            className={classNameItem}\n            imgClassName={imgClassName}\n            hiddenSelectPrompt={hiddenSelectPrompt}\n            parentFolderId={parentFolderId}\n            refetchImages={refetchImages}\n            isUpload={isUpload}\n            hiddenSelect={hiddenSelect}\n            containerWidth={containerWidth}\n            selectionMode={selectionMode}\n            isChecked={isChecked}\n            onCheck={onCheck}\n            onClick={onSelect}\n            hiddenMenu={hiddenMenu}\n            isDisabledInView={isDisabledInView}\n            showHoverAttributes={showHoverAttributes}\n            image={{\n              ...image,\n              generationSource: ImageGenerationSource.None,\n            }}\n            hiddenTypeImage={true}\n            hiddenReaction={hiddenReaction}\n            stretch={stretch}\n          />\n        ) : (\n          <ImageItemList\n            image={image as ImageSimpleDetail}\n            refetchImages={refetchImages}\n            onClick={onSelect}\n            accessedAt={accessedAt}\n          />\n        )}\n      </RoutedDialogLink>\n      {layout === \"grid\" && (!hiddenReaction || !hiddenSelectPrompt) && !selectionMode && (\n        <ImageReaction\n          refetchImages={refetchImages}\n          showHoverAttributes={showHoverAttributes}\n          hiddenSelectPrompt={hiddenSelectPrompt}\n          hiddenReaction={hiddenReaction}\n          hiddenName={true}\n          className=\"md:p-2\"\n          parentFolderId={parentFolderId}\n          image={image}\n        />\n      )}\n    </div>\n  )\n}\n\nexport default memo(ImageCardNavigator)\n","import { SortOptions } from \"@/api/sdk\"\nimport ScrollHorizontalContainer from \"@/components/Alpha/ScrollHorizontalContainer\"\nimport ImageCardNavigator from \"@/components/Explore/Gallery/ImageItem/ImageCardNavigator\"\nimport { ImagesProvider } from \"@/providers/ImagesProvider\"\nimport { useExploreImagesInfiniteQuery } from \"@/queries\"\n\ninterface ExampleImagesProps {\n  recipeId: string\n  hasPrompt?: boolean\n}\n\nconst ExampleImages = ({ recipeId, hasPrompt }: ExampleImagesProps) => {\n  const { flattenData: mappedImagesExample = [] } = useExploreImagesInfiniteQuery({\n    variables: {\n      sortBy: SortOptions.MOSTFAVORITE,\n      recipeIds: [recipeId],\n      take: 8,\n    },\n  })\n\n  if (mappedImagesExample.length === 0) return null\n\n  return (\n    <div className=\"p-4 md:p-6 pb-0 md:pb-0\">\n      <p className=\"text-sm mb-2 font-semibold text-atherGray-300\">Some generated by community</p>\n      <div className=\"w-full relative overflow-hidden\">\n        <div className=\"overflow-hidden max-w-full\">\n          <ImagesProvider images={mappedImagesExample}>\n            <ScrollHorizontalContainer className=\"space-x-1 w-full\">\n              {mappedImagesExample?.map(image => {\n                return (\n                  <div key={image.id} className=\"shrink-0 flex h-[10rem]\">\n                    <ImageCardNavigator\n                      isExplore\n                      hiddenMenu\n                      hiddenReaction\n                      stretch\n                      isDisabledInView\n                      hiddenSelectPrompt={!hasPrompt}\n                      className=\"h-full\"\n                      imgClassName=\"w-auto\"\n                      hiddenSelect\n                      classNameItem=\"rounded-none\"\n                      filters={{\n                        sortBy: SortOptions.MOSTFAVORITE,\n                        recipeIds: [recipeId],\n                        take: 8,\n                        promptMode: true,\n                      }}\n                      data={image}\n                    />\n                  </div>\n                )\n              })}\n            </ScrollHorizontalContainer>\n          </ImagesProvider>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default ExampleImages\n","import ImageWebpComponent from \"@/components/ImageWebpComponent\"\nimport { useDebounce } from \"@/hooks\"\nimport { useAuth } from \"@/providers/authContext\"\nimport { useGetHistoryTaskInfiniteQuery } from \"@/queries/task/useGetTaskInfiniteQuery\"\nimport { useWorkspaceSearchHistory } from \"@/stores\"\nimport useCustomRouter from \"@/hooks/useCustomRouter\"\nimport { ReactNode, useMemo, useState } from \"react\"\nimport SearchBar from \"../../FoldersV2/SearchBar\"\nimport { googleAnalytics } from \"@/lib/gtag\"\nimport { cn } from \"@/lib/utils\"\nimport { CheckCircleIcon } from \"@/components/shared/icons\"\n\ninterface RecipeSearchProps {\n  sendRecipe: string\n  children?: ReactNode\n  selectionMode: boolean\n  toggleSelectionMode: (mode: \"images\") => void\n  className?: string\n}\n\nconst RecipeSearch = ({ sendRecipe, children, className, selectionMode, toggleSelectionMode }: RecipeSearchProps) => {\n  const router = useCustomRouter()\n  const { user, loading } = useAuth()\n  const [search, setSearch] = useState(\"\")\n  const debouncedSearch = useDebounce(search, 350)\n\n  const [addHistory, removeHistory] = useWorkspaceSearchHistory(s => [s.addHistory, s.removeHistory])\n  const history = useWorkspaceSearchHistory(s =>\n    s.history.filter(item => item.uid === user?.uid && item.location === \"/workspace/tools/recipes\"),\n  )\n\n  const handleConfirmSearch = (search: string) => {\n    router.push(\n      {\n        query: { ...router.query, search },\n      },\n      undefined,\n      { shallow: true },\n    )\n\n    googleAnalytics.event({\n      action: \"click\",\n      category: \"recipe_search\",\n      label: \"search\",\n      params: {\n        search: search,\n      },\n    })\n\n    if (search) {\n      addHistory({\n        uid: user?.uid ?? \"\",\n        location: \"/workspace/tools/recipes\",\n        text: search,\n      })\n    }\n  }\n\n  const handleClearSearchHistory = (text: string) => {\n    removeHistory({\n      location: \"/workspace/tools/recipes\",\n      text,\n      uid: user?.uid ?? \"\",\n    })\n  }\n\n  const { data, isLoading } = useGetHistoryTaskInfiniteQuery({\n    variables: {\n      includeFullDataImages: true,\n      recipeIds: [sendRecipe],\n      take: 20,\n      search: debouncedSearch,\n    },\n    refetchOnWindowFocus: false,\n    enabled: debouncedSearch !== \"\" && !loading,\n  })\n\n  const previewResult = useMemo(() => data?.pages.flatMap(i => i), [data])\n\n  const buildPreviewResult = (search: string) => {\n    if (isLoading) {\n      return (\n        <div className=\"p-1\">\n          <p className=\"text-atherGray-300 text-sm\">Searching...</p>\n        </div>\n      )\n    }\n\n    if (!isLoading && previewResult?.length === 0) {\n      return (\n        <div className=\"p-1\">\n          <p className=\"text-atherGray-300 text-sm\">No results found</p>\n        </div>\n      )\n    }\n\n    if (previewResult && previewResult.length > 0) {\n      const resultLeft = previewResult.length\n\n      return (\n        <div className=\"flex flex-col space-y-2 overflow-y-auto overflow-x-hidden max-h-[55vh]\">\n          {previewResult?.map(item => (\n            <div\n              key={item.id}\n              className=\"flex w-full rounded-2xl items-center hover:bg-atherGray-850 p-1 px-2 cursor-pointer\"\n            >\n              <ImageWebpComponent\n                className=\"w-12 h-12 rounded-lg object-cover\"\n                src={item.fullDataImages && item.fullDataImages?.length > 0 ? item.fullDataImages?.[0]?.url : \"\"}\n                alt=\"avatar\"\n              />\n              <div className=\"ml-2\">\n                <p className=\"text-sm line-clamp-1 font-semibold mb-1\">{item.name}</p>\n                <p className=\"text-xs truncate text-atherGray-300\">\n                  {user?.uid === item.creator?.uid ? `${item.creator?.name} (me)` : item.creator?.name}\n                </p>\n              </div>\n            </div>\n          ))}\n          {resultLeft > 0 && (\n            <button\n              className=\"text-xs font-semibold text-atherGray-300 hover:text-atherGray-0 hover:underline text-left\"\n              onClick={() => handleConfirmSearch(search)}\n            >\n              ...and {resultLeft} other {resultLeft > 1 ? \"results\" : \"result\"}\n            </button>\n          )}\n        </div>\n      )\n    }\n\n    return null\n  }\n\n  return (\n    <div\n      className={cn(\"sticky top-0 md:top-[4.5rem] right-0 bg-black z-[1] w-full p-2 md:p-4 flex flex-col\", className)}\n    >\n      <div className=\"flex items-center\">\n        <div className=\"flex flex-wrap justify-end flex-1\">\n          <SearchBar\n            search={search}\n            setSearch={setSearch}\n            inputClassName=\"md:w-80\"\n            onConfirmSearch={handleConfirmSearch}\n            history={history}\n            previewResultBuilder={buildPreviewResult}\n            onClear={() => {\n              handleConfirmSearch?.(\"\")\n            }}\n            onClearSearchHistory={text => {\n              handleClearSearchHistory(text.text)\n            }}\n          />\n          <button\n            type=\"button\"\n            className={cn(\n              \"rounded-2xl ml-2 p-2 px-3 hover:bg-atherGray-850 flex items-center text-atherGray-300 transition-all\",\n              {\n                \"bg-atherGray-850 text-atherGray-0\": selectionMode,\n              },\n            )}\n            onClick={() => toggleSelectionMode(\"images\")}\n          >\n            <CheckCircleIcon width={20} height={20} checked={selectionMode} />\n            <span className=\"font-normal ml-1 text-sm hidden md:block\">Multi-select</span>\n          </button>\n        </div>\n      </div>\n      {children}\n    </div>\n  )\n}\n\nexport default RecipeSearch\n","import { FolderDetail, RecipeInputField, RecipeItem, WildcardDetail } from \"@/api/sdk\"\nimport IconButton from \"@/components/IconButton\"\nimport { COMFY_RECIPE_ID } from \"@/components/Tools/ComfyUIRecipe/ComfyUIRecipeBuilder/ComfyUIDetail\"\nimport { TRY_STYLE_RECIPE } from \"@/components/Tools/Style/StyleDetail/StyleDetail\"\nimport { ArrowSquareLeftIcon, ChevronDownIcon, InfoIcon, RefreshIcon, ShareIcon8 } from \"@/components/shared/icons\"\nimport { useScreen } from \"@/hooks\"\nimport { useAuth } from \"@/providers/authContext\"\nimport { cn } from \"@/utils/cn\"\nimport classNames from \"classnames\"\nimport { motion } from \"framer-motion\"\nimport dynamic from \"next/dynamic\"\nimport React, { useRef, useState } from \"react\"\nimport { UseFormReturn } from \"react-hook-form\"\nimport { RemoveScroll } from \"react-remove-scroll\"\nimport DrawerSelectFolder from \"../../Workflows/WorkflowsChaining/DrawerSelectFolder\"\nimport BackButton from \"@/components/BackButton\"\nimport { useBrowserRouter } from \"@/providers/BrowserRouterProvider\"\nimport { getHasClientHistory } from \"@/stores/ClientHistoryStore\"\nimport { googleAnalytics } from \"@/lib/gtag\"\nimport useCustomRouter from \"@/hooks/useCustomRouter\"\nimport useModalStore from \"@/lib/store\"\nimport RecipeSelect from \"../../Workflows/WorkflowsChaining/RecipeSelect\"\nimport useAutoSizeTextArea from \"@/hooks/useAutoSizeTextArea\"\nimport Tooltip from \"@/components/Tooltip\"\nimport { RecipeCreateType } from \"@/utils/task\"\nconst DynamicFormRecipe = dynamic(() => import(\"./FormDetail\"), { ssr: false })\n\ninterface SettingRecipeProps {\n  isOpenSideBar: boolean\n  sendRecipe: string\n  setSendRecipe: (recipe: string) => void\n  recipeInputs: (RecipeInputField & { isChecked?: boolean })[]\n  setRecipeInputs: React.Dispatch<React.SetStateAction<(RecipeInputField & { isChecked?: boolean })[]>>\n  setIsOpenSidebar: React.Dispatch<React.SetStateAction<boolean>>\n  isLoadingCreate: boolean\n  form: UseFormReturn<RecipeCreateType, any, undefined>\n  recipe?: RecipeItem\n  wildcardsState: WildcardDetail[]\n  loraIds: string[]\n  onResetDefaultSettings: () => void\n}\n\nconst SettingRecipe = ({\n  isOpenSideBar,\n  setIsOpenSidebar,\n  sendRecipe,\n  onResetDefaultSettings,\n  setSendRecipe,\n  recipeInputs,\n  loraIds,\n  isLoadingCreate,\n  wildcardsState,\n  setRecipeInputs,\n  form,\n  recipe,\n}: SettingRecipeProps) => {\n  const { width } = useScreen()\n  const sidebarRef = useRef<HTMLDivElement>(null)\n  const [isOpenRecipes, setIsOpenRecipes] = useState(false)\n  const [folder, setFolder] = useState<FolderDetail>()\n  const [selectedRecipe, setSelectedRecipe] = useState<RecipeItem>()\n  const { user } = useAuth()\n  const textareaRef = useRef<HTMLTextAreaElement>(null)\n  const recipeContainerRef = useRef<HTMLDivElement>(null)\n  const router = useCustomRouter()\n  const { back } = useBrowserRouter()\n  const setSharingData = useModalStore(state => state.setSharingData)\n\n  const currentRecipe = selectedRecipe ?? recipe\n\n  const handleShare = () => {\n    if (!recipe || recipe.isPublic) return\n\n    googleAnalytics.handleCategoryEvent({\n      action: \"click\",\n      params: {\n        action: \"Share Recipe\",\n        recipe_id: recipe.id,\n        recipe_name: recipe.name,\n      },\n    })\n\n    setSharingData({\n      id: recipe.id,\n      name: recipe.name ?? recipe.id,\n      type: \"recipe\",\n      workspaceId: recipe.workspace?.id,\n      creator: {\n        ...recipe.creator,\n        uid: recipe.creator?.uid ?? \"\",\n      },\n      link: `${window.location.origin}/workspace/tools/recipes/${recipe.id}`,\n    })\n  }\n\n  const handleBack = () => {\n    googleAnalytics.handleCategoryEvent({\n      action: \"click\",\n      params: {\n        action: \"Back\",\n      },\n    })\n\n    const hasHistory = getHasClientHistory()\n\n    if (hasHistory) {\n      back()\n    } else {\n      router.push(\"/workspace/tools/recipes\")\n    }\n  }\n\n  useAutoSizeTextArea(textareaRef.current, currentRecipe?.description ?? \"\", !!currentRecipe)\n\n  const {\n    formState: { errors },\n  } = form\n\n  return (\n    <>\n      <motion.div\n        initial={{ opacity: 0 }}\n        animate={{ opacity: 1 }}\n        key={isOpenSideBar ? \"open\" : \"close\"}\n        transition={{ duration: 0.5, delay: 0.15 }}\n        onClick={e => {\n          e.stopPropagation()\n          setIsOpenSidebar(prev => !prev)\n        }}\n        className={classNames(\"fixed flex top-[4.75rem] z-[24] cursor-pointer rounded-md\", {\n          \"rotate-180 left-2\": !isOpenSideBar,\n          \"left-[88vw] md:left-80 lg:left-[18.25rem]\": isOpenSideBar,\n        })}\n      >\n        <ArrowSquareLeftIcon width={24} height={24} />\n      </motion.div>\n      <motion.div\n        className={cn(\n          \"border-l border-r border-atherGray-800 bg-atherGray-900\",\n          \"fixed top-[0] lg:sticky md:top-[4.5rem] left-0 overflow-hidden flex flex-col z-[24] md:z-[2] pb-[5.15rem] md:pb-0 height-full-screen md:h-[calc((var(--vh,1vh)*100)-4.5rem-1px)]\",\n          \"transition-all duration-300 ease-in-out\",\n          {\n            \"w-0\": !isOpenSideBar,\n            \"w-[88vw] md:w-80\": isOpenSideBar,\n          },\n        )}\n      >\n        <div className=\"flex flex-col w-[88vw] md:w-80 bg-atherGray-900 overflow-hidden flex-1\">\n          <RemoveScroll\n            enabled={width < 768 && isOpenSideBar}\n            style={{\n              animationDelay: \"0s\",\n              overflow: \"hidden\",\n              flex: 1,\n              display: \"flex\",\n              flexDirection: \"column\",\n            }}\n            removeScrollBar\n          >\n            <div\n              className=\"overflow-auto z-[1] flex-1 flex flex-col\"\n              ref={sidebarRef}\n              style={{\n                WebkitOverflowScrolling: \"touch\",\n              }}\n            >\n              <div className=\"relative p-4 border-b border-atherGray-700\" ref={recipeContainerRef}>\n                <div className=\"p-4 absolute pointer-events-none inset-0 w-full h-full\">\n                  <div className=\"w-full h-full select-recipe\" />\n                </div>\n\n                <div className=\"w-full mb-4 flex items-center space-x-2\">\n                  <BackButton\n                    className=\"rounded-lg text-sm py-1.5 px-3 min-h-0\"\n                    label=\"Back\"\n                    onClick={() => handleBack()}\n                  />\n                  {recipe && user && recipe.capabilities?.canShare && !recipe.isPublic && (\n                    <IconButton\n                      colorScheme=\"secondary\"\n                      title=\"Share\"\n                      className=\"font-semibold text-xs p-2\"\n                      onClick={e => {\n                        e.stopPropagation()\n                        handleShare()\n                      }}\n                    >\n                      <ShareIcon8 width={16} height={16} />\n                    </IconButton>\n                  )}\n                  {recipe && (\n                    <Tooltip\n                      side=\"bottom\"\n                      trigger={\n                        <IconButton\n                          colorScheme=\"secondary\"\n                          className=\"font-semibold text-xs p-2\"\n                          onClick={e => {\n                            e.stopPropagation()\n                            onResetDefaultSettings()\n                          }}\n                        >\n                          <RefreshIcon width={16} height={16} className=\"rotate-180\" />\n                        </IconButton>\n                      }\n                    >\n                      Reset default settings\n                    </Tooltip>\n                  )}\n                </div>\n\n                <p className=\"mb-1 text-sm text-atherGray-300\">Select a recipe</p>\n                <div\n                  className={classNames(\n                    \"bg-atherGray-800 p-2 text-sm rounded-lg flex items-center overflow-hidden cursor-pointer border\",\n                    {\n                      \"border-atherGray-800\": !isOpenRecipes,\n                      \"border-atherPurple-500\": isOpenRecipes,\n                    },\n                  )}\n                  onClick={e => {\n                    e.stopPropagation()\n                    setIsOpenRecipes(prev => !prev)\n                  }}\n                >\n                  <p className=\"line-clamp-1 flex-1\">{currentRecipe?.name ?? \"\"}</p>\n                  <div className=\"text-atherGray-300\">\n                    <ChevronDownIcon className=\"-rotate-90\" width={14} height={14} />\n                  </div>\n                </div>\n                {currentRecipe?.description && (\n                  <div className=\"flex items-start mt-2\">\n                    <InfoIcon className=\"text-atherGray-600 mr-2\" width={14} height={14} />\n                    <textarea\n                      ref={textareaRef}\n                      disabled={true}\n                      style={{\n                        height: \"24px\",\n                      }}\n                      readOnly={true}\n                      value={currentRecipe?.description}\n                      className={classNames(\"resize-none text-xs text-atherGray-300 flex-1 bg-transparent\")}\n                    />\n                  </div>\n                )}\n                <RecipeSelect\n                  isOpen={isOpenRecipes}\n                  selectedRecipe={selectedRecipe ?? { id: sendRecipe, isPublic: true }}\n                  setSelectedRecipe={(recipe, _param) => {\n                    setSelectedRecipe(recipe)\n                    setSendRecipe(recipe.id)\n                  }}\n                  onClose={() => setIsOpenRecipes(false)}\n                />\n              </div>\n              <div\n                className={classNames(\"p-4 flex-1 flex flex-col \", {\n                  hidden: recipe?.id === COMFY_RECIPE_ID || recipe?.id === TRY_STYLE_RECIPE,\n                })}\n              >\n                <DynamicFormRecipe\n                  loraIds={loraIds}\n                  wildcardsState={wildcardsState}\n                  recipeInputs={recipeInputs}\n                  setRecipeInputs={setRecipeInputs}\n                  form={form}\n                  recipe={recipe}\n                  hideOutputFolder\n                />\n              </div>\n            </div>\n            <div className=\"flex flex-col gap-4 p-4 items-stretch relative border-t border-atherGray-800\">\n              <div className=\"absolute inset-0 w-full h-full pointer-events-none p-4\">\n                <div className=\"w-full h-full recipe-save-or-generate\" />\n              </div>\n              <div\n                className={classNames({\n                  hidden: !user || recipe?.id === COMFY_RECIPE_ID || recipe?.id === TRY_STYLE_RECIPE,\n                })}\n              >\n                <p className=\"mb-1 font-semibold text-sm\">Save the output in</p>\n                <div id=\"folderId\">\n                  <DrawerSelectFolder\n                    title=\"Save the output in\"\n                    selected={folder}\n                    setSelected={v => {\n                      setFolder(v)\n                      form.setValue(\"folderId\", v?.id)\n                    }}\n                    placeHolder=\"Recipe Images\"\n                  />\n                  {errors.folderId?.message && (\n                    <span className=\"mt-1 text-xs text-red-500\">{errors.folderId?.message}</span>\n                  )}\n                </div>\n              </div>\n              <IconButton\n                isLoading={isLoadingCreate}\n                type=\"submit\"\n                className={classNames(\"p-2 w-full font-semibold\", {\n                  hidden: recipe?.id === COMFY_RECIPE_ID || recipe?.id === TRY_STYLE_RECIPE,\n                })}\n              >\n                Generate\n              </IconButton>\n            </div>\n          </RemoveScroll>\n        </div>\n      </motion.div>\n    </>\n  )\n}\n\nexport default SettingRecipe\n","import { EntityType, GetModelsResponse, WildcardDetail } from \"@/api/sdk\"\nimport LoadingLogo from \"@/components/LoadingLogo\"\nimport { useDebounce, useScreen, useToast } from \"@/hooks\"\nimport { googleAnalytics } from \"@/lib/gtag\"\nimport { useBrowserRouter } from \"@/providers/BrowserRouterProvider\"\nimport { useAuth } from \"@/providers/authContext\"\nimport { useCreateTaskMutation, useCreateTaskNotAuthMutation, useTrackingViewMutation } from \"@/queries\"\nimport {\n  useAddRecipesMutation,\n  useGetRecipeDetailNotAuthQuery,\n  useGetRecipeDetailQuery,\n} from \"@/queries/workspace/recipe\"\nimport {\n  useManagementErrorsStore,\n  useLatestRecipesParams,\n  useRecipeImageStore,\n  useSignInStore,\n  useTempTaskStoreV2,\n} from \"@/stores\"\nimport generateCaptchaToken from \"@/utils/generateCaptchaToken\"\nimport { useQueryClient } from \"@tanstack/react-query\"\nimport classNames from \"classnames\"\nimport { AnimatePresence, motion } from \"framer-motion\"\nimport { uniqBy } from \"lodash\"\nimport _isNil from \"lodash/isNil\"\nimport _omitBy from \"lodash/omitBy\"\nimport Head from \"next/head\"\n\nimport { chunkString } from \"@/utils/parser\"\nimport useCustomRouter from \"@/hooks/useCustomRouter\"\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\"\nimport { FormProvider, useForm } from \"react-hook-form\"\nimport MultiImagesSelectBar from \"../../FoldersV2/MultiImagesSelectBar\"\nimport { useMultiImagesSelect } from \"../../FoldersV2/useMultiImagesSelect\"\n// import { TurboModeProvder, useTurboMode } from \"../../TurboMode/useTurboMode\"\nimport NotFoundUI from \"@/components/NotFound\"\nimport RequestModal from \"../../ImageDetailWorkspace/RequestModal\"\nimport ExampleImages from \"./ExampleImages\"\nimport { CheckableRecipeInput } from \"./FormDetail\"\nimport { useLoraQuery } from \"./FormDetail/FormDetailLora\"\nimport ListRecipes from \"./ListRecipes\"\nimport RecipeSearch from \"./RecipeSearch\"\nimport SettingRecipe from \"./SettingRecipe\"\nimport {\n  getStyleParamWithQueryClient,\n  handlePasteParamsRecipe,\n  RecipeCreateType,\n  recipeParamsWithWildcard,\n  validateRecipeParams,\n} from \"@/utils/task\"\nimport WorkspaceContainer from \"../../WorkspaceContainer\"\n\nexport { type CheckableRecipeInput }\n\ninterface RecipeDetailProps {\n  recipeId: string\n}\n\nconst RecipeDetailInner = ({ recipeId }: RecipeDetailProps) => {\n  const [sendRecipe, setSendRecipe] = useState(recipeId)\n  const [recipeImage, setRecipeImage] = useRecipeImageStore(state => [state.recipeImage, state.setRecipeImage])\n  const { tempTask, setTempTask } = useTempTaskStoreV2()\n  const setSignInModal = useSignInStore(state => state.setSignInModal)\n  const { user, loading } = useAuth()\n  const [isAdding, setIsAdding] = useState(true)\n\n  useEffect(() => {\n    if (!recipeId) return\n\n    setSendRecipe(recipeId)\n  }, [recipeId])\n\n  const {\n    data: recipeNotAuth,\n    isLoading: isLoadingNotAuth,\n    isSuccess: isSuccessNotAuth,\n    error: errorNotAuth,\n    refetch: refetchNotAuth,\n    isError: isLoadingNotAuthError,\n  } = useGetRecipeDetailNotAuthQuery({ variables: { recipeId: sendRecipe }, enabled: !user && !loading && !isAdding })\n\n  const {\n    data: recipeAuth,\n    isLoading: isLoadingAuth,\n    isSuccess: isSuccessAuth,\n    error: errorAuth,\n    refetch: refetchAuth,\n    isError: isLoadingAuthError,\n  } = useGetRecipeDetailQuery({ variables: { recipeId: sendRecipe }, enabled: !!user && !loading && !isAdding })\n\n  const recipe = useMemo(() => (user ? recipeAuth : recipeNotAuth), [recipeAuth, recipeNotAuth, user])\n  const isLoading = isLoadingAuth || isLoadingNotAuth\n  const isError = isLoadingAuthError || isLoadingNotAuthError\n  const isSuccess = isSuccessAuth || isSuccessNotAuth\n  const errorCode = user ? errorAuth : errorNotAuth\n  const statusErrorCode = Number((errorCode as any)?.statusCode)\n  const refetch = user ? refetchAuth : refetchNotAuth\n\n  const isOpenRequest = useDebounce(!isLoading && !!recipe && !recipe.capabilities?.canView && !recipe.isPublic, 500)\n\n  const form = useForm<RecipeCreateType>({\n    mode: \"onSubmit\",\n  })\n\n  const [isOpenSideBar, setIsOpenSidebar] = useState(true)\n  const [recipeInputs, setRecipeInputs] = useState<CheckableRecipeInput[]>([])\n  const toast = useToast()\n  const qc = useQueryClient()\n  const { width } = useScreen()\n  const router = useCustomRouter()\n\n  const [loraIds, setLoraIds] = useState<string[]>([])\n  const [wildcardsState, setWildcardsState] = useState<WildcardDetail[]>([])\n\n  const { mutate: mutateTrackingView } = useTrackingViewMutation()\n  const { latestRecipesParams, setLatestRecipesParams } = useLatestRecipesParams()\n\n  const { mutateAsync: mutateAdd } = useAddRecipesMutation()\n\n  const recipeInputsRef = useRef(recipeInputs)\n\n  useEffect(() => {\n    recipeInputsRef.current = recipeInputs\n  }, [recipeInputs])\n\n  useEffect(() => {\n    if (isSuccess) {\n      if (isSuccessAuth) {\n        mutateTrackingView({\n          entityId: recipe?.id ?? recipeId,\n          entityType: EntityType.RECIPE,\n        })\n      }\n\n      googleAnalytics.handleCategoryEvent({\n        action: \"view\",\n        params: {\n          action: \"View Recipe Detail\",\n          recipe_id: recipeId,\n          recipe_name: recipe?.name ?? \"\",\n        },\n      })\n    }\n  }, [isSuccess])\n\n  useEffect(() => {\n    const handleAddRecipe = async (recipeId: string) => {\n      const result = await mutateAdd({\n        ids: [recipeId],\n        userUid: user?.uid ?? \"\",\n      }).finally(() => {\n        setIsAdding(false)\n      })\n    }\n\n    if (!loading && router.isReady) {\n      handleAddRecipe(recipeId)\n    }\n  }, [loading, router.isReady])\n\n  useEffect(() => {\n    if (!recipe) return\n\n    const timer = setTimeout(() => {\n      let latestRecipeParams = latestRecipesParams?.find(i => i.recipeId === recipe.id)?.params\n\n      const defaultValues = recipe.steps\n        ?.map(step =>\n          step.inputs.reduce((acc, curr) => {\n            acc[curr.key] = latestRecipeParams?.[curr.key] || curr.value\n\n            return acc\n          }, {}),\n        )\n        .reduce((acc, curr) => ({ ...acc, ...curr }), {})\n\n      handlePasteParamsRecipe(defaultValues, form.reset, setRecipeInputs, recipe)\n    }, 50)\n\n    return () => {\n      clearTimeout(timer)\n    }\n  }, [recipe])\n\n  const { asPath } = useBrowserRouter()\n\n  useEffect(() => {\n    if (!recipe) return\n\n    if (!asPath.includes(\"/workspace/tools/recipes/\")) return\n    if (!recipeImage) return\n\n    if (!recipeImage.isModal) {\n      const timeout = setTimeout(() => {\n        if (recipeImage.params) {\n          const { modelIds, ...newParams } = recipeImage.params\n\n          setLoraIds(modelIds)\n\n          handlePasteParamsRecipe(newParams, form.reset, setRecipeInputs, recipe, params => {\n            if (recipeImage) {\n              let paramWildcard = [] as WildcardDetail[]\n              const paramsWildcards = Object.keys(params).filter(key => key.includes(\"_wildcard\"))\n\n              paramsWildcards.forEach(key => {\n                const wildcard = params[key] as WildcardDetail\n                const wildcardIndex = paramWildcard.findIndex(i => i.id === wildcard.id)\n\n                if (wildcardIndex > -1) {\n                  paramWildcard[wildcardIndex] = wildcard\n                } else {\n                  paramWildcard.push(wildcard)\n                }\n              })\n\n              setWildcardsState(paramWildcard)\n\n              setRecipeImage(null)\n            }\n          })\n        }\n      }, 400)\n\n      return () => {\n        clearTimeout(timeout)\n      }\n    }\n  }, [recipeImage, recipe, asPath])\n\n  const setErrorState = useManagementErrorsStore(state => state.setErrorState)\n\n  const { mutate: mutateCreateTask, isPending: isLoadingCreateAuth } = useCreateTaskMutation({\n    onSuccess: data => {\n      qc.invalidateQueries({ queryKey: [\"recipe-ongoing\", { recipeIds: [sendRecipe] }] })\n\n      if (width < 768) {\n        setIsOpenSidebar(false)\n      }\n\n      toast({\n        status: \"success\",\n        title: \"Submitted! Your task is running\",\n        duration: 5000,\n      })\n\n      const { prompt: promptParam, ...otherParams } = data.params as Record<string, any>\n\n      const splitPrompt = chunkString(promptParam ?? \"\", 100)\n      const promptParams = Object.fromEntries((splitPrompt ?? []).map((item, index) => [`prompt_${index + 1}`, item]))\n\n      googleAnalytics.handleCategoryEvent({\n        action: \"click\",\n        params: {\n          action: \"Submit Generated Task Completed\",\n          recipe_id: recipeId,\n          recipe_name: recipe?.name ?? \"\",\n          task_id: data.id,\n          ...otherParams,\n          ...promptParams,\n        },\n      })\n    },\n    onError: (err: any) => {\n      if (\n        err?.message.startsWith(\"Guest user does not have permission\") ||\n        err?.message.startsWith(\"Your subscription has ended\")\n      ) {\n        setErrorState({\n          isOpen: true,\n          message: err.message,\n        })\n        return\n      }\n\n      if (err?.error === \"Bad Request\") {\n        toast({ title: \"Cannot Complete Request\", message: [err.message], status: \"error\" })\n      } else {\n        toast({ title: \"Error\", message: [err.message], status: \"error\" })\n      }\n    },\n  })\n\n  const { mutate: mutateCreateTaskNotAuth, isPending: isLoadingCreateNotAuth } = useCreateTaskNotAuthMutation({\n    onSuccess: data => {\n      if (data) {\n        setTempTask([...(tempTask || []), { id: data.id, type: \"recipe\" }])\n      }\n\n      googleAnalytics.handleCategoryEvent({\n        action: \"click\",\n        params: {\n          action: \"Submit Generated Task Completed\",\n          recipe_id: recipeId,\n          recipe_name: recipe?.name ?? \"\",\n          task_id: data.id,\n          ...data.params,\n        },\n      })\n\n      qc.invalidateQueries({ queryKey: [\"recipe-ongoing\", { recipeIds: [sendRecipe] }] })\n\n      if (width < 768) {\n        setIsOpenSidebar(false)\n      }\n\n      toast({\n        status: \"success\",\n        title: \"Submitted! Your task is running\",\n        duration: 5000,\n      })\n    },\n    onError: (err: any) => {\n      if (\n        err?.message.startsWith(\"Guest user does not have permission\") ||\n        err?.message.startsWith(\"Your subscription has ended\")\n      ) {\n        setErrorState({\n          isOpen: true,\n          message: err.message,\n        })\n        return\n      }\n      if (err?.error === \"Bad Request\") {\n        toast({ title: \"Cannot Complete Request\", message: [err.message], status: \"error\" })\n      } else {\n        toast({ title: \"Error\", message: [err.message], status: \"error\" })\n      }\n    },\n  })\n\n  const isLoadingCreate = isLoadingCreateAuth || isLoadingCreateNotAuth\n\n  const [isQueueingTurbo, setQueueingTurbo] = useState(false)\n  const turboAuto = useRef(false)\n\n  const handleChangeRecipe = (recipeId: string) => {\n    turboAuto.current = false\n    setSendRecipe(recipeId)\n    router.replace(`/workspace/tools/recipes/${recipeId}`)\n  }\n\n  const onSaveParams = useCallback(\n    (params: Record<string, any>, recipeId: string, folderId?: string) => {\n      const prevLatestRecipeParams = [\n        ...(latestRecipesParams ?? []),\n        {\n          folderId: folderId,\n          recipeId,\n          params,\n        },\n      ].reverse()\n\n      setLatestRecipesParams(uniqBy(prevLatestRecipeParams, r => r.recipeId))\n    },\n    [latestRecipesParams, setLatestRecipesParams],\n  )\n\n  const [isMutating, setIsMutating] = useState(false)\n\n  // submit\n  const submit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault()\n    if (!recipe) return\n\n    const lorasKey = useLoraQuery.getKey({ baseModel: recipe.baseModel })\n    const loras = qc.getQueryData<GetModelsResponse>(lorasKey)\n\n    const res = await validateRecipeParams({\n      form,\n      recipeInputs,\n      loras,\n    })\n\n    const hasWildcardField = recipeInputs.some(input => input.allowWildcard)\n\n    if (!res) return\n\n    const { params, folderId } = res\n\n    const { prompt: promptParam, ...otherParams } = params\n\n    const splitPrompt = chunkString(promptParam ?? \"\", 100)\n    const promptParams = Object.fromEntries((splitPrompt ?? []).map((item, index) => [`prompt_${index + 1}`, item]))\n\n    googleAnalytics.handleCategoryEvent({\n      action: \"click\",\n      params: {\n        action: \"Submit Generated Task\",\n        recipe_id: recipeId,\n        recipe_name: recipe?.name ?? \"\",\n        ...otherParams,\n        ...promptParams,\n      },\n    })\n\n    let newParams = params\n\n    try {\n      if (hasWildcardField) {\n        setIsMutating(true)\n\n        newParams = await recipeParamsWithWildcard(newParams, recipeInputs)\n      }\n\n      if (newParams?.[\"style\"]) {\n        setIsMutating(true)\n\n        const style = await getStyleParamWithQueryClient(newParams[\"style\"], qc)\n\n        if (style && style.name) {\n          newParams = {\n            ...newParams,\n            styleName: style.name,\n          }\n        }\n      }\n    } catch (error) {\n      setIsMutating(false)\n    } finally {\n      setIsMutating(false)\n    }\n\n    window.scrollTo({\n      top: 0,\n      behavior: \"smooth\",\n    })\n\n    onSaveParams(newParams, recipe.id, folderId)\n\n    if (!user) {\n      if (tempTask && tempTask?.length >= 5) {\n        toast({\n          status: \"error\",\n          title: \"You have reached the limit of 5 tasks\",\n          message: [\"Please sign in to continue.\"],\n        })\n\n        setSignInModal({\n          signIn: true,\n        })\n\n        return\n      }\n\n      const captchaToken = await generateCaptchaToken()\n\n      mutateCreateTaskNotAuth({\n        recipeId: recipe.id,\n        params: newParams,\n        captchaToken,\n      })\n      return\n    }\n\n    mutateCreateTask({\n      folderId: folderId,\n      recipeId: recipe.id,\n      params: newParams,\n    })\n  }\n\n  const handleRunAgain = async (folderId: string, recipeId: string, params: Record<string, any>) => {\n    if (!user) {\n      if (tempTask && tempTask?.length >= 5) {\n        toast({\n          status: \"error\",\n          title: \"Limit reached\",\n          message: [\"Please sign in to generate more\"],\n        })\n\n        setSignInModal({\n          signIn: true,\n        })\n\n        return\n      }\n\n      const captchaToken = await generateCaptchaToken()\n\n      mutateCreateTaskNotAuth({\n        recipeId,\n        params,\n        captchaToken,\n      })\n      return\n    }\n\n    // read wildcard data\n    // process wildcard prompt for only fields that are in params\n    const hasWildcardField = recipeInputs.some(input => input.allowWildcard)\n\n    let newParams = params\n\n    if (hasWildcardField) {\n      newParams = await recipeParamsWithWildcard(newParams, recipeInputs)\n    }\n\n    mutateCreateTask({\n      folderId,\n      recipeId,\n      params: newParams,\n    })\n  }\n\n  const { selectionMode, selectedItems, toggleSelectionMode, addSelection, clear } = useMultiImagesSelect()\n\n  const hasPrompt = useMemo(() => recipeInputs.some(i => i.key === \"prompt\"), [recipeInputs])\n\n  const renderBody = () => {\n    if (loading || isLoading || isAdding) {\n      return (\n        <div className=\"flex items-center justify-center flex-1 w-full\">\n          <LoadingLogo />\n        </div>\n      )\n    }\n\n    if (isError) {\n      if (statusErrorCode === 403)\n        return (\n          <RequestModal\n            onRefetch={refetch}\n            isModal\n            dataRequest={{\n              entityId: recipeId,\n              entityType: EntityType.RECIPE,\n            }}\n            isOpenRequest={true}\n            onCloseRequestModal={() => router.push(\"/workspace/tools/recipes\")}\n          />\n        )\n\n      return <NotFoundUI description=\"Recipe\" redirectTo=\"/workspace/tools/recipes\" />\n    }\n\n    return (\n      <>\n        <Head>\n          <title>GAIA | {recipe?.name ?? \"...\"}</title>\n        </Head>\n        <motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} className=\"relative flex flex-1 w-full\">\n          <FormProvider {...form}>\n            <form onSubmit={submit} className=\"w-full flex-1 flex\">\n              <div className=\"w-full flex-1 flex\">\n                <SettingRecipe\n                  onResetDefaultSettings={() => {\n                    if (!recipe) return\n\n                    const defaultValues = recipe.steps\n                      ?.map(step =>\n                        step.inputs.reduce((acc, curr) => {\n                          acc[curr.key] = curr.value\n\n                          return acc\n                        }, {}),\n                      )\n                      .reduce((acc, curr) => ({ ...acc, ...curr }), {})\n\n                    handlePasteParamsRecipe(defaultValues, form.reset, setRecipeInputs, recipe)\n                  }}\n                  isOpenSideBar={isOpenSideBar}\n                  isLoadingCreate={isLoadingCreate || isQueueingTurbo || isMutating}\n                  setIsOpenSidebar={setIsOpenSidebar}\n                  recipeInputs={recipeInputs}\n                  setRecipeInputs={setRecipeInputs}\n                  sendRecipe={sendRecipe}\n                  setSendRecipe={handleChangeRecipe}\n                  form={form}\n                  recipe={recipe}\n                  loraIds={loraIds}\n                  wildcardsState={wildcardsState}\n                />\n\n                <div className=\"flex-1 flex items-center flex-col bg-black relative\">\n                  <MultiImagesSelectBar\n                    clear={clear}\n                    className={classNames(\"top-[3.75rem]\", {\n                      hidden: !user,\n                    })}\n                    recipeId={sendRecipe}\n                    selectedItems={selectedItems}\n                  />\n                  <WorkspaceContainer className=\"flex-1\">\n                    <ExampleImages recipeId={sendRecipe} hasPrompt={hasPrompt} />\n                    <RecipeSearch\n                      className={classNames({\n                        hidden: !user,\n                      })}\n                      sendRecipe={sendRecipe}\n                      selectionMode={selectionMode}\n                      toggleSelectionMode={toggleSelectionMode}\n                    />\n                    {!user && <div className=\"py-4\" />}\n                    <ListRecipes\n                      isLoadingCreateTask={isLoadingCreate}\n                      onCreateTask={({ folderId, recipeId, params }) => {\n                        handleRunAgain(folderId, recipeId, params)\n                      }}\n                      onCloseSidebar={() => setIsOpenSidebar(false)}\n                      recipeName={recipe?.name}\n                      recipeInputs={recipeInputs}\n                      setRecipeInputs={setRecipeInputs}\n                      taskIds={!user ? tempTask?.map(i => i.id) : undefined}\n                      setValues={params => handlePasteParamsRecipe(params, form.reset, setRecipeInputs, recipe)}\n                      sendRecipe={sendRecipe}\n                      selectionMode={selectionMode}\n                      selectedItems={selectedItems}\n                      onCheck={image => {\n                        addSelection({\n                          ...image,\n                          capabilities: {\n                            canMove: true,\n                            canShare: true,\n                            canDelete: true,\n                            canUpdate: true,\n                            canView: true,\n                            canComment: true,\n                            canRecover: true,\n                            canToggleDiscovery: true,\n                          },\n                        })\n                      }}\n                    />\n                  </WorkspaceContainer>\n                </div>\n              </div>\n            </form>\n          </FormProvider>\n\n          <AnimatePresence mode=\"wait\">\n            {isOpenSideBar && (\n              <motion.div\n                initial={{ opacity: 0 }}\n                animate={{\n                  opacity: 1,\n                  transition: { duration: 0.2 },\n                }}\n                className={classNames(\"fixed lg:hidden inset-0 bg-blackAlpha-600 z-[23] md:z-[1]\")}\n                onClick={() => setIsOpenSidebar(false)}\n              />\n            )}\n          </AnimatePresence>\n        </motion.div>\n      </>\n    )\n  }\n\n  return (\n    <>\n      <div className=\"flex flex-col w-full flex-1 relative\">{renderBody()}</div>\n      {recipe && (\n        <RequestModal\n          onRefetch={refetch}\n          isModal\n          dataRequest={{\n            entityId: recipe.id,\n            entityType: EntityType.RECIPE,\n            workspace: { ...recipe.workspace, picture: recipe.workspace?.picture ?? \"\" },\n            discoverableAt: recipe?.discoverableAt,\n          }}\n          isOpenRequest={isOpenRequest}\n          onCloseRequestModal={() => router.push(\"/workspace/tools/recipes\")}\n        />\n      )}\n    </>\n  )\n}\n\nconst RecipeDetail = (props: RecipeDetailProps) => {\n  return <RecipeDetailInner {...props} />\n}\n\nexport default RecipeDetail\n","import client from \"@/api/client\"\nimport { PreviewEntityType } from \"@/api/sdk\"\nimport { DetailLayout } from \"@/components/Layouts\"\nimport { Metadata } from \"@/components/Metadata\"\nimport { clientUrl } from \"@/constants\"\nimport { capitalize } from \"@/utils\"\nimport useCustomRouter from \"@/hooks/useCustomRouter\"\nimport RecipeDetail from \"@/components/Workspace/Recipes/RecipeDetail\"\n\ntype RecipeDetailProps = {\n  title: string\n  description: string\n  previewImage?: string\n}\n\nconst RecipeDetailPage = ({ data }: { data: RecipeDetailProps }) => {\n  const router = useCustomRouter()\n  const { recipeId } = router.query\n\n  return (\n    <>\n      <Metadata\n        title={data.title}\n        description={data.description}\n        key={(recipeId as string) || data?.title}\n        url={`${clientUrl}/workspace/tools/recipes/${recipeId}?t=${new Date().getTime()}`}\n        previewImage={data.previewImage}\n        type=\"website\"\n      />\n      <RecipeDetail recipeId={recipeId as string} />\n    </>\n  )\n}\n\nRecipeDetailPage.getLayout = page => <DetailLayout>{page}</DetailLayout>\n\nexport default RecipeDetailPage\n\n//server side rendering\nexport const getServerSideProps = async context => {\n  const { recipeId } = context.params\n\n  const name = capitalize((recipeId as string)?.replaceAll(\"-\", \" \") ?? \"\").replace(\"Ai\", \"AI\")\n\n  let data: RecipeDetailProps = {\n    title: `GAIA | ${name} Recipe`,\n    description: \"Where Creativity In Production Meets Collaboration\",\n    previewImage: \"\",\n  }\n\n  try {\n    const previewInfo = await client.api\n      .previewControllerGetPreviewInfo({\n        id: recipeId,\n        type: PreviewEntityType.RECIPE,\n      })\n      .then(res => res.data)\n\n    if (previewInfo) {\n      data.title = `GAIA | ${previewInfo.name ?? name} Recipe`\n      data.description = previewInfo.description ?? \"Where Creativity In Production Meets Collaboration\"\n      data.previewImage = previewInfo.imageUrl\n    }\n\n    return {\n      props: {\n        data,\n      },\n    }\n  } catch (error) {\n    return {\n      props: { data },\n    }\n  }\n}\n"],"names":["window","__NEXT_P","push","__webpack_require__","__webpack_exports__","Z","memo","data","image","onSelect","containerWidth","refetchImages","className","isDisabledInView","hiddenSelectPrompt","hiddenMenu","showHoverAttributes","isExplore","selectionMode","isChecked","onCheck","parentFolderId","filters","isUpload","accessedAt","stretch","classNameItem","imgClassName","hiddenSelect","hiddenReaction","layout","typeRedirectRouter","param","galleryItemRef","useRef","images","useImagesContext","historyPath","router","useCustomRouter","asPath","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","div","data-id","id","cn","ref","jsx","RoutedDialogLink","name","type","state","imageId","ImageInView","onClick","generationSource","ImageGenerationSource","None","hiddenTypeImage","ImageItemList","ImageReaction","hiddenName","RecipeDetail_ExampleImages","recipeId","hasPrompt","flattenData","mappedImagesExample","useExploreImagesInfiniteQuery","variables","sortBy","SortOptions","MOSTFAVORITE","recipeIds","take","length","jsx_runtime","p","ImagesProvider","ScrollHorizontalContainer","map","ImageCardNavigator","promptMode","RecipeDetail_RecipeSearch","sendRecipe","children","toggleSelectionMode","user","loading","useAuth","search","setSearch","useState","debouncedSearch","useDebounce","addHistory","removeHistory","useWorkspaceSearchHistory","s","history","filter","item","uid","location","handleConfirmSearch","query","undefined","shallow","googleAnalytics","event","action","category","label","params","text","handleClearSearchHistory","isLoading","useGetHistoryTaskInfiniteQuery","includeFullDataImages","refetchOnWindowFocus","enabled","previewResult","useMemo","pages","flatMap","i","SearchBar","inputClassName","onConfirmSearch","previewResultBuilder","resultLeft","ImageWebpComponent","src","fullDataImages","url","alt","creator","concat","button","onClear","onClearSearchHistory","CheckCircleIcon","width","height","checked","span","DynamicFormRecipe","dynamic","Promise","all","e","then","bind","ssr","RecipeDetail_SettingRecipe","recipe","errors","currentRecipe","isOpenSideBar","setIsOpenSidebar","onResetDefaultSettings","setSendRecipe","recipeInputs","loraIds","isLoadingCreate","wildcardsState","setRecipeInputs","form","useScreen","sidebarRef","isOpenRecipes","setIsOpenRecipes","folder","setFolder","selectedRecipe","setSelectedRecipe","textareaRef","recipeContainerRef","back","useBrowserRouter","setSharingData","useModalStore","handleShare","isPublic","handleCategoryEvent","recipe_id","recipe_name","workspaceId","workspace","link","origin","handleBack","getHasClientHistory","useAutoSizeTextArea","current","description","formState","Fragment","motion","initial","opacity","animate","transition","duration","delay","stopPropagation","prev","classNames","ArrowSquareLeftIcon","RemoveScroll","style","animationDelay","overflow","flex","display","flexDirection","removeScrollBar","WebkitOverflowScrolling","BackButton","capabilities","canShare","IconButton","colorScheme","title","ShareIcon8","Tooltip","side","trigger","RefreshIcon","ChevronDownIcon","InfoIcon","textarea","disabled","readOnly","value","RecipeSelect","isOpen","_param","onClose","hidden","COMFY_RECIPE_ID","TRY_STYLE_RECIPE","hideOutputFolder","DrawerSelectFolder","selected","setSelected","v","setValue","placeHolder","folderId","message","RecipeDetailInner","recipeImage","setRecipeImage","useRecipeImageStore","tempTask","setTempTask","useTempTaskStoreV2","setSignInModal","useSignInStore","isAdding","setIsAdding","useEffect","recipeNotAuth","isLoadingNotAuth","isSuccess","isSuccessNotAuth","error","errorNotAuth","refetch","refetchNotAuth","isError","isLoadingNotAuthError","useGetRecipeDetailNotAuthQuery","recipeAuth","isLoadingAuth","isSuccessAuth","errorAuth","refetchAuth","isLoadingAuthError","useGetRecipeDetailQuery","errorCode","statusErrorCode","Number","statusCode","isOpenRequest","canView","useForm","mode","toast","useToast","qc","useQueryClient","setLoraIds","setWildcardsState","mutate","mutateTrackingView","useTrackingViewMutation","latestRecipesParams","setLatestRecipesParams","useLatestRecipesParams","mutateAsync","mutateAdd","useAddRecipesMutation","recipeInputsRef","entityId","entityType","EntityType","RECIPE","handleAddRecipe","ids","userUid","finally","isReady","timer","setTimeout","latestRecipeParams","find","defaultValues","steps","step","inputs","reduce","acc","curr","key","handlePasteParamsRecipe","reset","clearTimeout","includes","isModal","timeout","modelIds","newParams","paramWildcard","paramsWildcards","keys","forEach","wildcard","wildcardIndex","findIndex","setErrorState","useManagementErrorsStore","mutateCreateTask","isPending","isLoadingCreateAuth","useCreateTaskMutation","onSuccess","invalidateQueries","queryKey","status","prompt","promptParam","otherParams","splitPrompt","chunkString","promptParams","Object","fromEntries","index","task_id","onError","err","startsWith","mutateCreateTaskNotAuth","isLoadingCreateNotAuth","useCreateTaskNotAuthMutation","isQueueingTurbo","setQueueingTurbo","turboAuto","onSaveParams","useCallback","prevLatestRecipeParams","reverse","uniqBy","r","isMutating","setIsMutating","submit","preventDefault","lorasKey","useLoraQuery","getKey","baseModel","loras","getQueryData","res","validateRecipeParams","hasWildcardField","some","input","allowWildcard","recipeParamsWithWildcard","getStyleParamWithQueryClient","styleName","scrollTo","top","behavior","signIn","captchaToken","generateCaptchaToken","handleRunAgain","selectedItems","addSelection","clear","useMultiImagesSelect","LoadingLogo","RequestModal","onRefetch","dataRequest","onCloseRequestModal","NotFoundUI","redirectTo","Head","FormProvider","onSubmit","SettingRecipe","replace","MultiImagesSelectBar","WorkspaceContainer","ExampleImages","RecipeSearch","ListRecipes","isLoadingCreateTask","onCreateTask","onCloseSidebar","recipeName","taskIds","setValues","canMove","canDelete","canUpdate","canComment","canRecover","canToggleDiscovery","AnimatePresence","picture","discoverableAt","Recipes_RecipeDetail","props","RecipeDetailPage","Metadata","clientUrl","Date","getTime","previewImage","RecipeDetail","getLayout","page","DetailLayout","_recipeId_"],"sourceRoot":""}